package com.chinasofti.thread01;
/*
生产者类 Cosker:实现 Runnable 接口，重写 run 方法，
设置线程任务判断是否有包子，
决定当前线程是否执行2如果有包子，就进入等待状态，
如果没有包子就继续做包子3生产包子之后，
更新桌子上包子状态，唤醒消费者消费包子
 */
public class Cooker extends Thread{
    private Desk desk;

    public Cooker(Desk desk){
        this.desk = desk;
    }
    @Override
    public void run() {
        while (true){
            synchronized (desk.getLock()){
                if(desk.getCount() == 0){
                    break;
                }else {
                    if(!desk.isFlag()){
                        //生产
                        System.out.println("厨师在生产包子");
                        desk.setFlag(true);
                        desk.getLock().notifyAll();//唤醒吃货
                    }else{
                        try {
                            desk.getLock().wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
}